package com.briup.day05;

import java.util.Arrays;
import java.util.Date;

/**
 * @author 谭梦寻
 * @version 1.1
 * 数组
 */
public class Test01 {
    public static void main(String[] args) {
//        数组 args 数组类型的形式局部变量
        System.out.println(args);
//        写法：
        int[] a;
        char[] a1;
        String[] a2;
        int[][] a3;

//        赋值：指向了一个开辟的内存空间 长度为4
        int[] arr = new int[3];//int 类型数组默认值为 0
//        调用数组的属性 length
        System.out.println(arr.length);
//        输出初始创建数组每个元素的默认值
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        double[] arr2 = new double[3];//double 类型数组默认值为 0.0
        String[] arr3 = new String[4];//String 类型数组的默认值为 null

//        数组定义并赋值
//        int[] arr4 = {1,2,3,4};//等价于 int arr4[] = {1,2,3,4};
        int arr4[] = {1,2,3,4};
        String s = Arrays.toString(arr4);
        System.out.println("s:" + s);
        System.out.println(s.length());//12
        for (int i = 0; i < arr4.length; i++) {
            System.out.println(arr4[i]);
        }
//        打印一个数组对象的字符串信息
//        [I@4554617c @左边指数据的类型 @右边是十六进制数(根据对象在堆中的地址值转换)
        System.out.println(arr4);
        //相当于新创建了一个长度为5的数组 和int arr4[] = {1,2,3,4};内容无关
//        将新数组的地址赋值给了 arr4 即arr4地址不再指向原来的内存空间
        arr4 = new int[5];
        for (int i = 0; i < arr4.length; i++) {
            System.out.println(arr4[i]);
        }
        boolean[] booleans = new boolean[2];
        System.out.println(booleans[1]);//默认值 false 二进制0000 0000 -> false
        Date[] dates = new Date[4];
        System.out.println(dates[1]);//null 引用类型(类类型) 没有元素都没有时间对象
/*
    NullPointerException 空指针异常
    当引用类型
 */

    }
}
